package 面向对象中级;

import java.util.Locale;

public class StringTest {

    /**
     * 字符中的方法：有的会修改原来字符串，有的不会修改原来字符串
     * length():字符串长度！！！
     *
     * @param args
     */
    public static void main(String[] args) {
        m6();
    }

    // *.java   ---->  *.class
    public static void m6() {
        String a = "ja";
        String b = "va";
        String c = "ja" + "va";   //常量相加 java   编译器优化
        String d = a + b;         //变量相加 java
        String e = c;           //e 和 c 指向同一个字符串   e==c   java
        String f = "java";      // java

        System.out.println(c == f);//true   == 地址！！
        System.out.println(d == f);//false
        System.out.println(c == e);//true
        System.out.println(d == e);//false  e==c 对的  c==f 对的  e==f 对的
        System.out.println(f == e);//true

    }

    //charAt:获取某个下标的字符,返回值char
    // length:获取字符串长度
    // valueOf:将基本类型转换为字符串
    public static void m5() {
        String str1 = "abcdefafdadfsada";
        System.out.println(str1.charAt(0));//a   sout   ai
        System.out.println(str1.charAt(2));//c
        System.out.println(str1.charAt(4));//e
        int count = 0;
        for (int i = 0; i < str1.length(); i++) {
            if (str1.charAt(i) == 'a') {
                count++;
            }
        }
        System.out.println("count:" + count);
        System.out.println("**********************************");
        int x = 100;
        String str2 = 100 + "";//int ---> String
        String str3 = String.valueOf(100);//int ---> String
    }


    //字符串比较方法
    //equals: 比较两个字符串(内容)是否相等。
    //equalsIgnoreCase：比较两个字符串内容，忽略大小写！！
    // compareTo：比大小！！
    public static void m4() {
        String str1 = "Abc";//？
        String str2 = new String("ABc");//堆

        System.out.println(str1 == str2);//==：比较两个变量的值！！  false
        System.out.println(str1.equals(str2));// equals：比较两个字符串(内容)是否相等
        //验证码
        System.out.println(str1.equalsIgnoreCase(str2)); //true
        System.out.println("*********************");
        String str3 = "abf";//(小) a  b  c  d  e  f g  (大)
        String str4 = "abc";//字符编码   a=97    b=98    c=99  d=100  e=101  f=102  g=103
        System.out.println(str3.compareTo(str4));// 0  相同    整数 大于    负数 小于  f-c=3!!
    }


    //字符串查找方法
    //endsWith:以xx为结尾
    //startsWith：以xxx开头
    // contains:包含某个字符串
    // indexOf：从前面开始找字符串，找到返回下标，没找到返回-1
    // lastIndexOf：从后面开始找字符串，找到返回下标，没找到返回-1
    public static void m3() {
        String str1 = "赤子心.mp3";
        System.out.println(str1.endsWith("mp3"));//true
        System.out.println(str1.endsWith("avi"));//false
        System.out.println(str1.startsWith("赤"));//true
        System.out.println(str1.startsWith("红"));//false
        System.out.println("***********************");
        System.out.println(str1.contains("子心"));//true
        System.out.println(str1.contains("午饭"));//false
        String str2 = "放假喜欢放假，我放假时候最开心，因为放假可以通宵";
        System.out.println(str2.indexOf("放假"));//3
        System.out.println(str2.indexOf("放假了"));//-1
        System.out.println(str2.lastIndexOf("放假"));//17
        System.out.println(str2.lastIndexOf("放假了"));//-1
        //可以设置从那个位置开始查找字符串
        System.out.println(str2.indexOf("放假", 5));//7
        System.out.println(str2.indexOf("放假",
                str2.indexOf("放假") + "放假".length()));//7

    }

    // concat:拼接，方法返回值为拼接之后的字符串
    // toLowerCase：转小写
    // toUpperCase：转大写
    // replace：替换
    // substring：截取字符串
    // trim：去两边空格
    public static void m2() {
        String str1 = "五一，";
        String str2 = "我来啦！";
        String str3 = str1.concat(str2);
        System.out.println(str3 + "**" + str1 + "**" + str2);
        System.out.println("*************************");
        String str4 = "I lOvE JaVa Ha";
        System.out.println(str4.toLowerCase());
        System.out.println(str4.toUpperCase());
        System.out.println(str4);
        System.out.println("*************************");
        String str5 = "我喜欢放假，我放假时候最开心，因为放假可以通宵";//放假
        System.out.println(str5.replace("放假", "**"));
        System.out.println(str5);
        String str6 = "abcdefg";
        System.out.println(str6.substring(2));//参数，下标(从0开始) cdefg
        System.out.println(str6.substring(2, 4));//参数，下标(从0开始) [2,4) cd
        System.out.println(str6);
        String str7 = "   a b c              ";
        System.out.println("1" + str7 + "1");
        System.out.println("1" + str7.trim() + "1");

    }

    //字符串创建！！
    public static void m1() {
        String str1 = "你好";//通过字符串常量
        String str2 = new String("你好");//构造方法
        System.out.println(str1 + "====" + str1.length());
        System.out.println(str2);
    }
}
